找传奇、传世资源到传世资源站!

C#边缘检测(Roberts/Sobel/拉普拉斯/Prewitt/Robinson...

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

 用多种方法对图像进行边缘检测,可作为车牌识别、图形处理的参考。from clipboard
C#边缘检测(Roberts/Sobel/拉普拉斯/Prewitt/Robinson/右下/kirsch/) C#语言基础-第2张using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace 边缘检测{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void 输入图像ToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog opengl = new OpenFileDialog(); opengl.Filter = "Bmp File(*.bmp)|*.bmp"; if (opengl.ShowDialog() == DialogResult.OK) { Bitmap image = new Bitmap(opengl.FileName); pictureBox1.Image = image; } } private void robertsToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); int rr, gg, bb, r1, r2, r3, r4, fxr, fyr, i, j; int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 0; i < pictureBox1.Image.Width - 2; i ) { for (j = 0; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j); c2 = box1.GetPixel(i 1, j 1); c3 = box1.GetPixel(i 1, j); c4 = box1.GetPixel(i, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; fxr = r1 - r2; fyr = r3 - r4; rr = Math.Abs(fxr) Math.Abs(fyr) 128; if (rr < 0) rr = 0; if (rr > 255) rr = 255; g1 = c1.G; g2 = c2.G; g3 = c3.G; g4 = c4.G; fxg = g1 - g2; fyg = g3 - g4; gg = Math.Abs(fxg) Math.Abs(fyg) 128; if (gg < 0) gg = 0; if (gg > 255) gg = 255; b1 = c1.B; b2 = c2.B; b3 = c3.B; b4 = c4.B; fxb = b1 - b2; fyb = b3 - b4; bb = Math.Abs(fxb) Math.Abs(fyb) 128; if (bb < 0) bb = 0; if (bb > 255) bb = 255; Color cc = Color.FromArgb(rr, gg, bb); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } private void sobelToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); Color c5 = new Color(); Color c6 = new Color(); Color c7 = new Color(); Color c8 = new Color(); Color c9 = new Color(); int rr, r1, r2, r3, r4,r5,r6,r7,r8,r9, fxr, fyr, i, j; // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 1; i < pictureBox1.Image.Width - 2; i ) { for (j =1; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j - 1); c2 = box1.GetPixel(i - 1, j); c3 = box1.GetPixel(i, j); c4 = box1.GetPixel(i 1, j); c5 = box1.GetPixel(i, j 1); c6 = box1.GetPixel(i - 1, j - 1); c7 = box1.GetPixel(i - 1, j 1); c8 = box1.GetPixel(i 1, j - 1); c9 = box1.GetPixel(i 1, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; r5 = c5.R; r6 = c6.R; r7 = c7.R; r8 = c8.R; r9 = c9.R; fxr = r6 2 * r2 r7 - r8 - 2 * r4 - r9; fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9; rr = Math.Abs(fxr) Math.Abs(fyr); if (rr < 0) rr = 0; if (rr > 255) rr = 255; Color cc = Color.FromArgb(rr, rr, rr); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } private void 拉普拉斯1ToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); Color c5 = new Color(); int rr, gg, bb, r1, r2, r3, r4, r5, fxr, i, j; int g1, g2, g3, g4, g5, fxg, b1, b2, b3, b4, b5, fxb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 1; i < pictureBox1.Image.Width - 2; i ) { for (j = 1; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j - 1); c2 = box1.GetPixel(i - 1, j); c3 = box1.GetPixel(i, j); c4 = box1.GetPixel(i 1, j); c5 = box1.GetPixel(i, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; r5 = c5.R; fxr = 4 * r3 - r1 - r2 - r4 - r5; rr = Math.Abs(fxr) * 5 128; if (rr < 0) rr = 0; if (rr > 255) rr = 255; g1 = c1.G; g2 = c2.G; g3 = c3.G; g4 = c4.G; g5 = c5.G; fxg = 4 * g3 - g1 - g2 - g4 - g5; gg = Math.Abs(fxg) * 5 128; if (gg < 0) gg = 0; if (gg > 255) gg = 255; b1 = c1.B; b2 = c2.B; b3 = c3.B; b4 = c4.B; b5 = c5.B; fxb = 4 * b3 - b1 - b2 - b4 - b5; bb = Math.Abs(fxb) * 5 128; if (bb < 0) bb = 0; if (bb > 255) bb = 255; Color cc = Color.FromArgb(rr, gg, bb); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } private void 拉普拉斯2ToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); Color c5 = new Color(); Color c6 = new Color(); Color c7 = new Color(); Color c8 = new Color(); Color c9 = new Color(); int rr, r1, r2, r3, r4, r5,r6, r7, r8, r9, fxr, i, j; // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 1; i < pictureBox1.Image.Width - 2; i ) { for (j = 1; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j - 1); c2 = box1.GetPixel(i - 1, j); c3 = box1.GetPixel(i, j); c4 = box1.GetPixel(i 1, j); c5 = box1.GetPixel(i, j 1); c6 = box1.GetPixel(i - 1, j - 1); c7 = box1.GetPixel(i - 1, j 1); c8 = box1.GetPixel(i 1, j - 1); c9 = box1.GetPixel(i 1, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; r5 = c5.R; r6 = c6.R; r7 = c7.R; r8 = c8.R; r9 = c9.R; fxr = 8 * r3 - r1 - r2 - r4 - r5 - r6 - r7 - r8 - r9; // fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9; rr = Math.Abs(fxr); if (rr < 0) rr = 0; if (rr > 255) rr = 255; Color cc = Color.FromArgb(rr, rr, rr); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } private void 右下ToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); Color c5 = new Color(); Color c6 = new Color(); Color c7 = new Color(); Color c8 = new Color(); Color c9 = new Color(); int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j; // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 1; i < pictureBox1.Image.Width - 2; i ) { for (j = 1; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j - 1); c2 = box1.GetPixel(i - 1, j); c3 = box1.GetPixel(i, j); c4 = box1.GetPixel(i 1, j); c5 = box1.GetPixel(i, j 1); c6 = box1.GetPixel(i - 1, j - 1); c7 = box1.GetPixel(i - 1, j 1); c8 = box1.GetPixel(i 1, j - 1); c9 = box1.GetPixel(i 1, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; r5 = c5.R; r6 = c6.R; r7 = c7.R; r8 = c8.R; r9 = c9.R; fxr = 2 * r2 - 2 * r5 2 * r1 2 * r4; // fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9; rr = Math.Abs(fxr); if (rr < 0) rr = 0; if (rr > 255) rr = 255; Color cc = Color.FromArgb(rr, rr, rr); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } private void prewittToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); Color c5 = new Color(); Color c6 = new Color(); Color c7 = new Color(); Color c8 = new Color(); Color c9 = new Color(); int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j; // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 1; i < pictureBox1.Image.Width - 2; i ) { for (j = 1; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j - 1); c2 = box1.GetPixel(i - 1, j); c3 = box1.GetPixel(i, j); c4 = box1.GetPixel(i 1, j); c5 = box1.GetPixel(i, j 1); c6 = box1.GetPixel(i - 1, j - 1); c7 = box1.GetPixel(i - 1, j 1); c8 = box1.GetPixel(i 1, j - 1); c9 = box1.GetPixel(i 1, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; r5 = c5.R; r6 = c6.R; r7 = c7.R; r8 = c8.R; r9 = c9.R; fxr = 2 * r3 r6 r2 - r4 - r5 r1 r7 r8 - r9; // fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9; rr = Math.Abs(fxr); if (rr < 0) rr = 0; if (rr > 255) rr = 255; Color cc = Color.FromArgb(rr, rr, rr); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } private void robinsonToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); Color c5 = new Color(); Color c6 = new Color(); Color c7 = new Color(); Color c8 = new Color(); Color c9 = new Color(); int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j; // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 1; i < pictureBox1.Image.Width - 2; i ) { for (j = 1; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j - 1); c2 = box1.GetPixel(i - 1, j); c3 = box1.GetPixel(i, j); c4 = box1.GetPixel(i 1, j); c5 = box1.GetPixel(i, j 1); c6 = box1.GetPixel(i - 1, j - 1); c7 = box1.GetPixel(i - 1, j 1); c8 = box1.GetPixel(i 1, j - 1); c9 = box1.GetPixel(i 1, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; r5 = c5.R; r6 = c6.R; r7 = c7.R; r8 = c8.R; r9 = c9.R; fxr = 2 * r2 - 2 * r4 r6 r7 - r8 - r9; // fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9; rr = Math.Abs(fxr); if (rr < 0) rr = 0; if (rr > 255) rr = 255; Color cc = Color.FromArgb(rr, rr, rr); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } private void kirschToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); Color c5 = new Color(); Color c6 = new Color(); Color c7 = new Color(); Color c8 = new Color(); Color c9 = new Color(); int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j; // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 1; i < pictureBox1.Image.Width - 2; i ) { for (j = 1; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j - 1); c2 = box1.GetPixel(i - 1, j); c3 = box1.GetPixel(i, j); c4 = box1.GetPixel(i 1, j); c5 = box1.GetPixel(i, j 1); c6 = box1.GetPixel(i - 1, j - 1); c7 = box1.GetPixel(i - 1, j 1); c8 = box1.GetPixel(i 1, j - 1); c9 = box1.GetPixel(i 1, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; r5 = c5.R; r6 = c6.R; r7 = c7.R; r8 = c8.R; r9 = c9.R; fxr = 3 * r6 5 * r1 - 3 * r8 5 * r2 - 3 * r4 5 * r7 - 3 * r5 - 3 * r9; // fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9; rr = Math.Abs(fxr); if (rr < 0) rr = 0; if (rr > 255) rr = 255; Color cc = Color.FromArgb(rr, rr, rr); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } private void smoothedToolStripMenuItem_Click(object sender, EventArgs e) { Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); Color c5 = new Color(); Color c6 = new Color(); Color c7 = new Color(); Color c8 = new Color(); Color c9 = new Color(); int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, fyr, i, j; // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb; Bitmap box1 = new Bitmap(pictureBox1.Image); Bitmap box2 = new Bitmap(pictureBox1.Image); for (i = 1; i < pictureBox1.Image.Width - 2; i ) { for (j = 1; j < pictureBox1.Image.Height - 2; j ) { c1 = box1.GetPixel(i, j - 1); c2 = box1.GetPixel(i - 1, j); c3 = box1.GetPixel(i, j); c4 = box1.GetPixel(i 1, j); c5 = box1.GetPixel(i, j 1); c6 = box1.GetPixel(i - 1, j - 1); c7 = box1.GetPixel(i - 1, j 1); c8 = box1.GetPixel(i 1, j - 1); c9 = box1.GetPixel(i 1, j 1); r1 = c1.R; r2 = c2.R; r3 = c3.R; r4 = c4.R; r5 = c5.R; r6 = c6.R; r7 = c7.R; r8 = c8.R; r9 = c9.R; fxr = -r2 r4 - r6 - r7 r8 r9; fyr = r6 r1 r8 - r7 - r5 - r9; rr = Math.Abs(fxr) Math.Abs(fyr); if (rr < 0) rr = 0; if (rr > 255) rr = 255; Color cc = Color.FromArgb(rr, rr, rr); box2.SetPixel(i, j, cc); } pictureBox2.Refresh(); pictureBox2.Image = box2; } } }}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复